from django.shortcuts import render
from django.http import JsonResponse
import json

def index(request):
    return render(request, 'dev_tools/index.html', {
        'tools': [
            {
                'name': 'JSON格式化工具',
                'description': '格式化、压缩、验证JSON数据',
                'url': '/dev-tools/json-formatter',
                'icon': 'fa-code'
            },
            # 其他工具可以在这里添加
        ]
    })

def json_formatter(request):
    """JSON格式化工具视图函数"""
    if request.method == 'GET':
        return render(request, 'dev_tools/json_formatter.html')
    
    if request.method == 'POST':
        try:
            data = json.loads(request.body)
            action = data.get('action')
            json_data = data.get('json_data')
            
            # 验证输入参数
            if not action or not json_data:
                return JsonResponse({
                    'error': 400, 
                    'message': '缺少必要参数'
                })
            
            # 解析JSON数据(用于验证)
            try:
                parsed_json = json.loads(json_data)
            except json.JSONDecodeError as e:
                if action == 'validate':
                    return JsonResponse({
                        'error': 0,
                        'body': {
                            'valid': False,
                            'message': str(e)
                        }
                    })
                return JsonResponse({
                    'error': 400,
                    'message': f'无效的JSON格式: {str(e)}'
                })
            
            # 处理不同操作
            if action == 'format':
                # 格式化: 缩进4个空格
                formatted_json = json.dumps(parsed_json, indent=4, ensure_ascii=False)
                return JsonResponse({
                    'error': 0,
                    'body': {
                        'result': formatted_json
                    }
                })
            
            elif action == 'minify':
                # 压缩: 删除所有不必要的空白
                minified_json = json.dumps(parsed_json, separators=(',', ':'), ensure_ascii=False)
                return JsonResponse({
                    'error': 0,
                    'body': {
                        'result': minified_json
                    }
                })
            
            elif action == 'validate':
                # 验证: 已在上面验证过
                return JsonResponse({
                    'error': 0,
                    'body': {
                        'valid': True,
                        'message': 'JSON格式有效'
                    }
                })
            
            else:
                return JsonResponse({
                    'error': 400,
                    'message': f'不支持的操作: {action}'
                })
                
        except Exception as e:
            return JsonResponse({
                'error': 500,
                'message': f'服务器错误: {str(e)}'
            }) 